/*
 * @Author: andy.dell andy@long.com
 * @Date: 2023-12-27 21:33:15
 * @LastEditors: andy.dell andy@long.com
 * @LastEditTime: 2024-01-11 23:30:29
 * @FilePath: \wasm\logic\go\snake\src\main.go
 * @Description:
 */
package main

import (
	"fmt"

	"com.game.snake/console"
)

func main() {
	defer func() {
		if err := recover(); err != nil {
			fmt.Println("[go]", "main 捕获到 panic:", err)
		}
	}()

	// 表现一、控制台游戏 : 开始计时器、开始游戏
	console.Play()
	// 表现二、wasm
	// wasm.Bind()
	// wasm.Init()

	// 这段代码是阻塞的。
	// 创建了一个只能接收布尔值的通道，但没有指定通道的缓冲区大小。
	// 在没有缓冲区的情况下，如果通道没有准备好接收数据，那么接收操作就会阻塞，直到有数据可接收。
	// 因此，这段代码会一直等待，直到通道准备好接收数据。
	// 阻塞 不退出 ，避免js报错
	// Uncaught (in promise) Error: Go program has already exited

	fmt.Println("[go]", "before chan")
	<-make(chan bool)
	fmt.Println("[go]", "after chan")
	// 火遮眼
	// c := make(chan struct{}, 0)
	// <-c
}

func runInWasm() {
	// js.Global().Set("Hello", js.FuncOf(Hello))
	// js.Global().Set("SayHi", js.FuncOf(SayHi))
	// // 开始游戏
	// js.Global().Set("Start", js.FuncOf(service.Start))
	// // 刷新数据
	// js.Global().Set("GetData", js.FuncOf(service.GetData))
}
